/***************************************************************************
 创建者: hualei
 开始时间: 2018.9.10
 copyright: (C) 深圳市华友高科有限公司
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) hualei 2018.9.10 类的具体实现代码编写

 ***************************************************************************
 *  @file ftpdelegate.h
 *  功能: ftp登录服务器,下载程序运行所需的配置文件
 *
 ***************************************************************************/
#ifndef FTPDELEGATE_H
#define FTPDELEGATE_H

#include <QObject>
#include "../CommunicateDelegate/globaldata.h"
#include "QHash"

/**
 * @brief The FtpDelegate class   不对外  ftp登录服务器,下载程序运行所需的配置文件
 */
class FtpDelegate : public QObject
{
    Q_OBJECT
public:
    /**
     * @brief FtpDelegate       构造函数
     * @param parent
     */
    explicit FtpDelegate(QObject* parent=0);
    ~FtpDelegate();

    /**
     * @brief isLoginToFtpSuccess   FTP登录服务器状态
     * @return
     */
    bool isLoginToFtpSuccess();

signals:

    /**
     * @brief loginGetDirFinished   HMI用户登录时，配置文件下载完成信号
     */
    void loginGetDirFinished();

public slots:

    /**
     * @brief loginToFtpSlot    登录FTP响应槽函数
     * @param ctrlIp            控制器IP
     * @param port              端口号
     * @param userName          登录用户名
     * @param userPasswd        登录密码
     */
    void loginToFtpSlot(const QString& ctrlIp, int port,const QString& userName,const QString& userPasswd);

    /**
     * @brief getFileInServerDirectorySlot      获取服务器目录下的所有文件信息
     */
    void getFileInServerDirectorySlot(QHash<QString,bool>, QString, QString);

    /**
     * @brief getFileSlot                   从服务器下载文件响应槽函数
     */
    void getFileSlot(bool, QString);

    /**
     * @brief isLoginToFtpSuccessSlot       FTP登录服务器响应槽函数
     * @param result                        登录状态  true:Success  false: fail
     * @param message                       登录消息
     */
    void isLoginToFtpSuccessSlot(bool result, QString message);

private:

    /**
     * @brief isLoginToFtp      登录状态
     */
    bool isLoginToFtp;

    /**
     * @brief serverClientPathList      服务器下载目录(key)---客户端接收目录(value)
     */
    QHash <QString, QString> serverClientPathList;

    /**
     * @brief serverFileNameList        目录文件列表
     */
    QVector <QString> serverFileNameList;

    /**
     * @brief serverPathTmp             服务器下载路径
     */
    QString serverPathTmp;

    /**
     * @brief clientPathTmp             客户端接收路径
     */
    QString clientPathTmp;

    /**
     * @brief currentFileIndex          当前下载文件索引
     */
    int currentFileIndex;

    /**
     * @brief currentDirIndex           当前下载目录索引
     */
    int currentDirIndex;

};

#endif // FTPDELEGATE_H
